Code coverage report for src/browser/errorParser.js

Statements: 88.24% (30 / 34)      Branches: 50% (3 / 6)      Functions: 85.71% (6 / 7)      Lines: 88.24% (30 / 34)      Ignored: none     

All files » src/browser/ » errorParser.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89    1   1 1               18         18   18   18 18 18 18 18   18   18           3   3 3   1     3   3 18     3     3                 3         2 1   1 1   1         1       1            
var ErrorStackParser = require('error-stack-parser');
 
var UNKNOWN_FUNCTION = '?';
var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ');
 
function guessFunctionName() {
  return UNKNOWN_FUNCTION;
}

 
function gatherContext() {
  return null;
}
 
 
function Frame(stackFrame) {
  var data = {};
 
  data._stackFrame = stackFrame;
 
  data.url = stackFrame.fileName;
  data.line = stackFrame.lineNumber;
  data.func = stackFrame.functionName;
  data.column = stackFrame.columnNumber;
  data.args = stackFrame.args;
 
  data.context = gatherContext(data.url, data.line);
 
  return data;
}
 
 
function Stack(exception) {
  function getStack() {
    var parserStack = [];
 
    try {
      parserStack = ErrorStackParser.parse(exception);
    } catch(e) {
      parserStack = [];
    }
 
    var stack = [];
 
    for (var i = 0; i < parserStack.length; i++) {
      stack.push(new Frame(parserStack[i]));
    }
 
    return stack;
  }
 
  return {
    stack: getStack(),
    message: exception.message,
    name: exception.name
  };
}
 
 
function parse(e) {
  return new Stack(e);
}
 
 
function guessErrorClass(errMsg) {
  if (!errMsg) {
    return ['Unknown error. There was no error message to display.', ''];
  }
  var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);
  var errClass = '(unknown)';
 
  if (errClassMatch) {
    errClass = errClassMatch[errClassMatch.length - 1];
  I  errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', '');
    errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, '');
  }
  return [errClass, errMsg];
}
 
 
module.exports = {
  guessFunctionName: guessFunctionName,
  guessErrorClass: guessErrorClass,
  gatherContext: gatherContext,
  parse: parse,
  Stack: Stack,
  Frame: Frame
};